/** 
    ____                            
   / __ )_________ __   _____  _____
  / __  / ___/ __ `/ | / / _ \/ ___/
 / /_/ / /  / /_/ /| |/ /  __/ /    
/_____/_/   \__,_/ |___/\___/_/     
* @Title: AbstractCacheLoader.java 
* @Package soft.ay.qram 
* @Description: 适配器：缓存操作抽象类
* @author vsuns 
* @date 2019年5月25日 
* @version V1.0 
*/ 
package soft.ay.qram;

import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import soft.ay.qram.helpers.CacheLoaderContext;

/**
 * 装饰器模式
 */
public class AbstractCacheLoader implements ICacheLoader
{
    // 属性部分
    private ICacheLoader simpleSyncStringCacheLoader = CacheLoaderContext.createLoader(SimpleSyncStringCacheLoader.class);

    // ------------------分割线------------------

    // 方法部分
    /*
     * (非 Javadoc) *
     * 
     * @param key
     * 
     * @param value
     * 
     * @see soft.ay.qram.CacheLoader#addToCache(java.lang.String,
     * java.lang.String)
     */

    @Override
    public void addToCache(String key, String value)
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        simpleSyncStringCacheLoader.addToCache(key, value);
    }

    /*
     * (非 Javadoc) *
     * 
     * @param key
     * 
     * @param value
     * 
     * @param expire
     * 
     * @see soft.ay.qram.CacheLoader#addToCache(java.lang.String,
     * java.lang.String, java.lang.Long)
     */

    @Override
    public void addToCache(String key, String value, TimeUnit unit, Long expire)
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        simpleSyncStringCacheLoader.addToCache(key, value, unit, expire);
    }

    /*
     * (非 Javadoc) *
     * 
     * @param key
     * 
     * @return
     * 
     * @see soft.ay.qram.CacheLoader#getFromCache(java.lang.String)
     */

    @Override
    public String getFromCache(String key)
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        return simpleSyncStringCacheLoader.getFromCache(key);
    }


    /*
     * (非 Javadoc) *
     * 
     * @return
     * 
     * @see soft.ay.qram.ICacheLoader#getKeys()
     */

    @Override
    public Set<String> getKeys()
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        return simpleSyncStringCacheLoader.getKeys();
    }

    /*
     * (非 Javadoc) *
     * 
     * @param key
     * 
     * @return
     * 
     * @see soft.ay.qram.ICacheLoader#containKey(java.lang.String)
     */

    @Override
    public Boolean containKey(String key)
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        return simpleSyncStringCacheLoader.containKey(key);
    }


    /*
     * (非 Javadoc) *
     * 
     * @param key
     * 
     * @see soft.ay.qram.ICacheLoader#removeKey(java.lang.String)
     */

    @Override
    public void removeKey(String key)
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        simpleSyncStringCacheLoader.removeKey(key);
    }

    /*
     * (非 Javadoc) *
     * 
     * @param key
     * 
     * @param unit
     * 
     * @param expire
     * 
     * @see soft.ay.qram.ICacheLoader#expireKey(java.lang.String,
     * java.util.concurrent.TimeUnit, java.lang.Long)
     */

    @Override
    public void expireKey(String key, TimeUnit unit, Long expire)
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        simpleSyncStringCacheLoader.expireKey(key, unit, expire);
    }

    /*
     * (非 Javadoc) *
     * 
     * @param key
     * 
     * @param unit
     * 
     * @param expire
     * 
     * @see soft.ay.qram.ICacheLoader#persistKey(java.lang.String,
     * java.util.concurrent.TimeUnit, java.lang.Long)
     */

    @Override
    public void persistKey(String key)
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        simpleSyncStringCacheLoader.persistKey(key);
    }

    /*
     * (非 Javadoc) *
     * 
     * @param key
     * 
     * @return
     * 
     * @see soft.ay.qram.ICacheLoader#matchKey(java.lang.String)
     */

    @Override
    public Set<String> matchKey(String key)
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        return simpleSyncStringCacheLoader.matchKey(key);
    }

    /*
     * (非 Javadoc) *
     * 
     * @param key
     * 
     * @return
     * 
     * @see soft.ay.qram.ICacheLoader#getFromCacheByMatchKey(java.lang.String)
     */

    @Override
    public Map<String, String> getFromCacheByMatchKey(String key)
    {
        // 注意：使用控制语句时，将头尾位置用注释标记起来
        // 局部变量定义的地方

        // 逻辑处理开始的地方
        // 逻辑处理结束的地方

        // 局部变量销毁的地方
        return simpleSyncStringCacheLoader.getFromCacheByMatchKey(key);
    }

}
